1. Field of the Invention
The present invention relates generally to a method that establishes a correct combination of different hardware and software entities necessary for the reliable operation of a computer system and more particularly to an improved method for resolving dependency conflicts across diverse sets of functional entities while installing or removing specific operative elements in a computing environment.
2. Discussion of Related Art
Computing environments include hardware components and software components. The components are divided into various types: processor devices, disk devices, printer devices, software packages, software libraries, kernel bases, kernel parameters, kernel modules, drivers, configuration files, flags, application packages and the like. The software elements also referred to as modules, or programs, comprise a multitude of executable instructions in hardware-readable format. The components are having diverse functionality or applications. Hardware devices are analog interfaces to the real world and perform physical work such as switching electronic circuits, transmitting electrical signals, magnetizing coils, pressing ink into paper surfaces, and the like while software modules operate in a digital mode and control both the operation of the hardware devices, the operation of other software modules in a preset manner, supply various services involving data manipulation and computation by receiving, processing, transforming and outputting information units in a predefined manner. System software modules such as kernel modules supervise, manage and control the operations of the computing environment in its entirety.
Typically in a computing environment various hardware and software entities operate in close co-operation. Therefore, within a typical computing environment a plurality of hardware and software entities have multiple dependency relationships with a plurality of other hardware and software entities. Such a dependency relationship could be defined as follows: in an exemplary computing environment for component ‘A’ to perform correctly, component ‘B’ and component ‘C’ are both needed. Therefore, in the exemplary computing environment such as an operating system platform the utilization of component ‘A’ necessitates the presence of component ‘B’ and the presence of component ‘C’.
Computer systems are practically never static. Frequently changes have to be made. Changing requirements of the environment necessitates the addition and/or replacement of hardware devices or software modules thereby inducing the addition and/or replacement of other software modules. Improved versions of present devices or modules effect the replacement of older versions thereof. New, state-of-art software packages are installed repeatedly in a dynamic process of development and growth. Modifying a computer system typically involves installation or removal of hardware devices or software modules—a process referred to as upgrading the system. When performing the predefined procedures necessary for an upgrade to be implemented frequently dependency conflicts arise among the components present and the components to be installed. Such dependency conflicts turn the upgrading process into a complicated, prolonged, difficult, and sometimes unsuccessful operation.
Conventionally, users utilizing specific installation utilities perform the installation and the update of components. The majority of utilities operate in a basic fashion; installable components are installed, replacing, if necessary, present components, no dependency checks are made therefore, no attempts are made to solve the dependency conflicts.
Some more advanced utilities perform dependency checks, typically abort the installation process when required and also inform the users in regard to the conflicts but make no attempts to solve the related problem.
Formerly, the present applicant submitted several patent applications including a method and system operative in resolving and preventing conflicts occurring during software installation within a computing system. The above-mentioned applications are listed above in the present application. One or more of the above-mentioned applications suggests a system and method for the substantial resolution and prevention of potential operational conflicts between diverse software components being installed. The present invention is substantially based on the method and system offered by the above-mentioned prior applications. The present invention proposes the utilization of several sub-methods to provide for enhanced execution times in certain computing environments wherein the timing factor is substantially important or even critical. The sub-methods are introduced in the form of additional executable software modules designed to be installed in the computing environment such that the activation of the extra modules is achieved by appropriate modifications in the main logic module of the method. For example, specific “call” instructions that contain the memory addresses of the sub-modules thereby made operative in the loading, the initialization and the activation of the additional sub-methods could be introduced at suitable address locations in the instruction sequence of the main logic module.
It will be obvious to those skilled in the art that there is a long felt need for a comprehensive, totally automated installation utility to assist users of small and medium-size computer system platforms in the exacting task of managing complex and dynamically evolving computing systems. Specifically there is an urgent need for an effective installation utility designed to resolve automatically inter-component dependency conflicts so as to enable routinely the accomplishment of fast, solid, efficient and convenient computer system upgrades.